load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test")
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_shared_library")
load("@rules_rust//wasm_bindgen/rules_nodejs:defs.bzl", "nodejs_rust_wasm_bindgen")

package(default_visibility = ["//visibility:public"])

rust_binary(
    name = "hello_world_bin_wasm",
    srcs = ["//wasm_bindgen:main.rs"],
    edition = "2018",
    deps = [
        "@rules_rust//wasm_bindgen/3rdparty:wasm_bindgen",
    ],
)

rust_shared_library(
    name = "hello_world_lib_wasm",
    srcs = ["//wasm_bindgen:main.rs"],
    edition = "2018",
    deps = [
        "@rules_rust//wasm_bindgen/3rdparty:wasm_bindgen",
    ],
)

nodejs_rust_wasm_bindgen(
    name = "hello_world_bundler_wasm_bindgen",
    wasm_file = ":hello_world_bin_wasm",
)

nodejs_rust_wasm_bindgen(
    name = "hello_world_web_wasm_bindgen",
    target = "web",
    wasm_file = ":hello_world_lib_wasm",
)

nodejs_rust_wasm_bindgen(
    name = "hello_world_deno_wasm_bindgen",
    target = "deno",
    wasm_file = ":hello_world_lib_wasm",
)

nodejs_rust_wasm_bindgen(
    name = "hello_world_nomodules_wasm_bindgen",
    target = "no-modules",
    wasm_file = ":hello_world_lib_wasm",
)

nodejs_rust_wasm_bindgen(
    name = "hello_world_nodejs_wasm_bindgen",
    target = "nodejs",
    wasm_file = ":hello_world_lib_wasm",
)

nodejs_test(
    name = "hello_world_wasm_test",
    args = ["rules_nodejs"],
    data = [
        ":hello_world_bundler_wasm_bindgen",
        ":hello_world_deno_wasm_bindgen",
        ":hello_world_nodejs_wasm_bindgen",
        ":hello_world_nomodules_wasm_bindgen",
        ":hello_world_web_wasm_bindgen",
    ],
    entry_point = "//wasm_bindgen:hello_world_wasm_test.js",
)
